unit Cad_TitulosFormulas;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Formulario_Padrao, StdCtrls, CheckLst, Buttons, RDprint, ExtCtrls,
  ComCtrls, Db, DBClient, Grids, DBGrids, TFlatButtonUnit;

type
  TFrmCad_TitulosFormulas = class(Tfrm_padr)
    BtnInsereHistorico: TSpeedButton;
    Label11: TLabel;
    ListaHistorico: TCheckListBox;
    Label2: TLabel;
    EdtCod_titformula: TEdit;
    Label3: TLabel;
    EdtDescricao: TEdit;
    PnlBusca: TPanel;
    Label1: TLabel;
    Label5: TLabel;
    DBGrid1: TDBGrid;
    CdsDemo: TClientDataSet;
    CdsDemocodigo: TStringField;
    CdsDemoDescricao: TStringField;
    BtnDemo: TSpeedButton;
    BtnOk: TBitBtn;
    DsDemo: TDataSource;
    BtnImprimir: TBitBtn;
    procedure FormActivate(Sender: TObject);
    procedure EdtCod_titformulaKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure EdtCod_titformulaExit(Sender: TObject);
    procedure BtnInsereHistoricoClick(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
    procedure btnGravarClick(Sender: TObject);
    procedure BtnEliminarClick(Sender: TObject);
    procedure EdtCod_titformulaEnter(Sender: TObject);
    procedure BtnDemoClick(Sender: TObject);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BtnOkClick(Sender: TObject);
    procedure BtnImprimirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmCad_TitulosFormulas: TFrmCad_TitulosFormulas;

implementation

uses clsHistorico, clsParametros, clsMovim,biblio, Con_Historico,
  Rel_Demonstrativo;

var
  Parametros    : TParametros;
  Historico     : THistorico;
  Movim         : TMovim;
  _hist         : integer;
  ConsHistorico : TFrmCon_Historico;
  Caminho       : string;
{$R *.DFM}

procedure TFrmCad_TitulosFormulas.FormActivate(Sender: TObject);
var
  ultimo :integer;
  texto  :TextFile;
  linha  :string;
begin
  inherited;
  CdsDemo.Active := false;
  CdsDemo.CreateDataSet;
  CdsDemo.Open;
  Parametros.Recuperar('1');
  Caminho := Parametros.Repos_personal;
  Bs.Panels.Items[0].Text:='';
  Panel1.Enabled      := true;
  Panel2.Enabled      := false;
  btnCancelar.Enabled := false;
  btnGravar.Enabled   := false;
  btnFechar.Enabled   := true;
  BtnEliminar.Enabled := false;
  ListaHistorico.Items.Clear;
  EdtCod_titformula.Clear;
  EdtDescricao.Clear;
  EdtCod_titformula.SetFocus;
  ultimo              :=0;
  if FileExists(Caminho+'RDemonstra.dem') = true then
  begin
    AssignFile(texto,caminho+'RDemonstra.dem');
    Reset(texto); // Abre e posiciona o texto
    while not eof(texto) do
    begin
      readln(texto,linha); // Leitura de uma linha do texto
      ultimo := strtoint(copy(linha,1,3));
    end;
    CloseFile(texto);
  end;
  EdtCod_titformula.Text := StrZero(inttostr(ultimo+1),3);
end;

procedure TFrmCad_TitulosFormulas.EdtCod_titformulaKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  texto  :TextFile;
  linha,cod_demonstra,cod_historico :string;
  existe :boolean;
begin
  inherited;
  if key = 12 then
  begin
    if EdtCod_titformula.Text = '' then
    begin
      EdtCod_titformula.setfocus;
      exit;
    end;
    EdtCod_titformula.Text := StrZero(EdtCod_titformula.Text,3);
    cod_demonstra := '';
    cod_historico := '';
    existe        := false;
    if FileExists(Caminho+'RDemonstra.dem') = true then
    begin
      AssignFile(texto,caminho+'RDemonstra.dem');
      Reset(texto); // Abre e posiciona o texto
      while not eof(texto) do
      begin
        readln(texto,linha); // Leitura de uma linha do texto
        cod_demonstra := copy(linha,1,3);
        if cod_demonstra = EdtCod_titformula.Text then
        begin
          EdtDescricao.Text := copy(linha,5,45);
          existe := true;
        end;
      end;
      CloseFile(texto);
    end;
    cod_demonstra := '';
    ListaHistorico.Clear;
    _hist:=0;
    if existe = true then
    begin
      BtnEliminar.Enabled := true;
      Bs.Panels.Items[0].Text:='Alterando';
      if FileExists(caminho+'RHistorico.HIS') = true then
      begin
        AssignFile(texto,caminho+'RHistorico.HIS');
        Reset(texto); // Abre e posiciona o texto
        while not eof(texto) do
        begin
          readln(texto,linha); // Leitura de uma linha do texto
          cod_demonstra := copy(linha,1,3);
          cod_historico := copy(linha,5,13);
          if cod_demonstra = EdtCod_titformula.Text then
          begin
            Historico.Recuperar(cod_historico);
            ListaHistorico.Items.Add(copy(cod_historico+repl(' ',10),1,10)+'-'+Historico.Hist_descricao);
            ListaHistorico.Checked[_hist] := True;
            _hist:=_hist+1;
          end;
        end;
        CloseFile(texto);
      end;
    end;
    Panel2.Enabled     := true;
    Panel1.Enabled     := false;
    btnCancelar.Enabled:= true;
    btnGravar.enabled  := true;
    btnFechar.Enabled  := false;
  end;
end;

procedure TFrmCad_TitulosFormulas.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Parametros.free;
  Historico.free;
  Movim.free;
end;

procedure TFrmCad_TitulosFormulas.FormCreate(Sender: TObject);
begin
  inherited;
  Parametros   := TParametros.create;
  Historico    := THistorico.create;
  Movim        := TMovim.create;
end;

procedure TFrmCad_TitulosFormulas.EdtCod_titformulaExit(Sender: TObject);
begin
  inherited;
  Bs.Panels.Items[0].Text:='';
  BtnDemo.Enabled := false;
end;

procedure TFrmCad_TitulosFormulas.BtnInsereHistoricoClick(Sender: TObject);
begin
  inherited;
  ConsHistorico  := TFrmCon_Historico.create(self);
  ConsHistorico.ShowModal;
  Historico.Recuperar(ConsHistorico.Hist_Codigo);
  ListaHistorico.Items.Add(copy(ConsHistorico.Hist_Codigo+repl(' ',10),1,10)+'-'+Historico.Hist_descricao);
  ListaHistorico.Checked[_hist] := True;
  _hist:=_hist+1;
  ConsHistorico.free;
end;

procedure TFrmCad_TitulosFormulas.btnCancelarClick(Sender: TObject);
begin
  inherited;
  FormActivate(sender);
end;

procedure TFrmCad_TitulosFormulas.btnGravarClick(Sender: TObject);
var
  texto,texto2 : TextFile;
  linha,linha2,cod_demonstra : string;
  i     : integer;
  existe:boolean;
begin
  inherited;
  existe := false;
  if FileExists(Caminho+'RHistorico.his') = true then
  begin
    existe := true;
    AssignFile(texto2,caminho+'RHistorico.his');
    Reset(texto2); // Abre e posiciona o texto
    AssignFile(texto,(Caminho+'RHistorico2.his')); //caminho e o nome do arquivo
    Rewrite(texto);
    while not eof(texto2) do
    begin
      readln(texto2,linha2); // Leitura de uma linha do texto
      cod_demonstra := copy(linha2,1,3);
      if cod_demonstra <> EdtCod_titformula.Text then
      begin
        linha:=linha2;
        Writeln(texto,linha); //Faz gravacao de uma linha no texto
      end;
    end;
    Closefile(texto);
    CloseFile(texto2);
  end;                   
  DeleteFile(Caminho+'RHistorico.his');
  RenameFile(Caminho+'RHistorico2.his',Caminho+'RHistorico.his');
  DeleteFile(Caminho+'RHistorico2.his');
  //insere os itens selecionados no arquivo texto
  if existe = true then
  begin
    AssignFile(texto,(Caminho+'RHistorico.his')); //caminho e o nome do arquivo
    Append(texto);
  end
  else
  begin
    AssignFile(texto,(Caminho+'RHistorico.his')); //caminho e o nome do arquivo
    Rewrite(texto);
  end;
  for i := 0 to _hist-1 do begin
    if ListaHistorico.Checked[i] = true then
    begin
      linha:=EdtCod_titformula.Text+'-'+copy(ListaHistorico.Items[i],1,9);
      Writeln(texto,linha); //Faz gravacao de uma linha no texto
    end;
  end;
  Closefile(texto);
  existe := false;
  if FileExists(Caminho+'RDemonstra.dem') = true then
  begin
    existe := true;
    AssignFile(texto2,Caminho+'RDemonstra.dem');
    Reset(texto2); // Abre e posiciona o texto
    AssignFile(texto,(Caminho+'RDemonstra2.dem')); //caminho e o nome do arquivo
    Rewrite(texto);
    while not eof(texto2) do
    begin
      readln(texto2,linha2); // Leitura de uma linha do texto
      cod_demonstra := copy(linha2,1,3);
      if cod_demonstra <> EdtCod_titformula.Text then
      begin
        linha:=linha2;
        Writeln(texto,linha); //Faz gravacao de uma linha no texto
      end;
    end;
    Closefile(texto);
    CloseFile(texto2);
  end;
  DeleteFile(Caminho+'RDemonstra.dem');
  RenameFile(Caminho+'RDemonstra2.dem',Caminho+'RDemonstra.dem');
  DeleteFile(Caminho+'RDemonstra2.dem');
  //insere os itens selecionados no arquivo texto
  if existe = true then
  begin
    AssignFile(texto,(Caminho+'RDemonstra.dem')); //caminho e o nome do arquivo
    Append(texto);
  end
  else
  begin
    AssignFile(texto,(Caminho+'RDemonstra.dem')); //caminho e o nome do arquivo
    Rewrite(texto);
  end;
  linha:=EdtCod_titformula.Text+'-'+EdtDescricao.Text;
  Writeln(texto,linha); //Faz gravacao de uma linha no texto
  Closefile(texto);
  FormActivate(sender);
end;

procedure TFrmCad_TitulosFormulas.BtnEliminarClick(Sender: TObject);
var
  texto,texto2 : TextFile;
  linha,linha2,cod_demonstra : string;
begin
  inherited;
  if FileExists(Caminho+'RHistorico.his') = true then
  begin
    AssignFile(texto2,caminho+'RHistorico.his');
    Reset(texto2); // Abre e posiciona o texto
    AssignFile(texto,(Caminho+'RHistorico2.his')); //caminho e o nome do arquivo
    Rewrite(texto);
    while not eof(texto2) do
    begin
      readln(texto2,linha2); // Leitura de uma linha do texto
      cod_demonstra := copy(linha2,1,3);
      if cod_demonstra <> EdtCod_titformula.Text then
      begin
        linha:=linha2;
        Writeln(texto,linha); //Faz gravacao de uma linha no texto
      end;
    end;
    Closefile(texto);
    CloseFile(texto2);
  end;
  DeleteFile(Caminho+'RHistorico.his');
  RenameFile(Caminho+'RHistorico2.his',Caminho+'RHistorico.his');
  DeleteFile(Caminho+'RHistorico2.his');
  if FileExists(Caminho+'RDemonstra.dem') = true then
  begin
    AssignFile(texto2,Caminho+'RDemonstra.dem');
    Reset(texto2); // Abre e posiciona o texto
    AssignFile(texto,(Caminho+'RDemonstra2.dem')); //caminho e o nome do arquivo
    Rewrite(texto);
    while not eof(texto2) do
    begin
      readln(texto2,linha2); // Leitura de uma linha do texto
      cod_demonstra := copy(linha2,1,3);
      if cod_demonstra <> EdtCod_titformula.Text then
      begin
        linha:=linha2;
        Writeln(texto,linha); //Faz gravacao de uma linha no texto
      end;
    end;
    Closefile(texto);
    CloseFile(texto2);
  end;
  DeleteFile(Caminho+'RDemonstra.dem');
  RenameFile(Caminho+'RDemonstra2.dem',Caminho+'RDemonstra.dem');
  DeleteFile(Caminho+'RDemonstra2.dem');
  if FileExists(Caminho+EdtCod_titformula.Text+'.BAN') = true then
    DeleteFile(Caminho+EdtCod_titformula.Text+'.BAN');
  FormActivate(sender);
end;

procedure TFrmCad_TitulosFormulas.EdtCod_titformulaEnter(Sender: TObject);
begin
  inherited;
  BtnDemo.Enabled := true;
end;

procedure TFrmCad_TitulosFormulas.BtnDemoClick(Sender: TObject);
var
  texto :TextFile;
  linha :string;
begin
  inherited;
  if FileExists(Caminho+'RDemonstra.dem') = true then
  begin
    AssignFile(texto,caminho+'RDemonstra.dem');
    Reset(texto); // Abre e posiciona o texto
    while not eof(texto) do
    begin
      readln(texto,linha); // Leitura de uma linha do texto
      CdsDemo.Append;
      CdsDemo.FieldByName('Codigo').AsString := copy(linha,1,3);
      CdsDemo.FieldByName('descricao').AsString := copy(linha,5,45);
      CdsDemo.Post;
    end;
    CloseFile(texto);
  end;
  PnlBusca.Visible:= true;
  PnlBusca.left := 16;                            
  PnlBusca.top  := 56;
end;

procedure TFrmCad_TitulosFormulas.DBGrid1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key = 12 then
  begin
    EdtCod_titformula.Text := CdsDemo.fieldbyname('codigo').AsString;
    PnlBusca.Visible:=false;
  end;
end;

procedure TFrmCad_TitulosFormulas.BtnOkClick(Sender: TObject);
begin
  inherited;
  EdtCod_titformula.Text := CdsDemo.fieldbyname('codigo').AsString;
  PnlBusca.Visible:=false;
end;

procedure TFrmCad_TitulosFormulas.BtnImprimirClick(Sender: TObject);
begin
  inherited;
  Executa(TFrmRel_Demonstrativo,Self);
end;

end.
